package juice.DI$multiInterface.module;

import juice.DI$multiInterface.service.Service;
import juice.DI$multiInterface.service.impl.HomeService;
import juice.DI$multiInterface.service.impl.SchoolService;

import com.google.inject.Binder;
import com.google.inject.Inject;
import com.google.inject.Module;
import com.google.inject.name.Named;
import com.google.inject.name.Names;

/**
 * 我太懒了不想写注解,怎么办？
 * 
 * 程序员都是懒惰的，Google帮我们提供了一个Names的模板来生成注解。
 * 
 * 我们使用Named来标注我们的服务应该使用什么样的注解，当然前提是我们已经将相应的服务与注解关联起来了。
 * 
 * @author Beanstao@gmail.com
 * @date 2013-9-23
 * @version 1.0
 */
public class ServiceModuleOfNoAnnotation implements Module
{
	@Inject
	@Named("hhome")
	public static Service homeService;

	@Inject
	@Named("sschool")
	public static Service schoolsService;

	@Override
	public void configure(Binder arg0)
	{
		arg0.bind(Service.class).annotatedWith(Names.named("hhome")).to(HomeService.class);
		arg0.bind(Service.class).annotatedWith(Names.named("sschool")).to(SchoolService.class);
		arg0.requestStaticInjection(ServiceModuleOfNoAnnotation.class);
	}

}
